Depth buffering is the standard technique to resolve visibility between objects in a rasterization pipeline. A depth buffer holds a depth value for each sample, representing the current closest depth of all previously rendered triangles overlapping the sample. The depth value, d, can be defined in a number of ways.
In a stochastic rasterizer with many samples per pixel, the depth buffer bandwidth requirements are much higher than usual, and the depth data should be compressed if possible. Most depth buffer compression schemes exploit the fact that the depth values from a triangle can be represented by a plane. Unfortunately, for moving and defocused triangles, this is no longer true.
In a static (2D) rasterizer, the depth function can be expressed as a plane. This is exploited by many depth compression schemes. Plane encoding is different from other algorithms because it exploits information coming directly from the rasterizer, and therefore uses the exact same plane equation representation in the compressor as in the rasterizer. The depth information is stored as a set of planes and a per-sample plane selection mask for each tile. When there are few triangles overlapping a tile, storing the plane equations and selection masks is more compact than simply storing the per-sample depth. However, when too many triangles overlap a tile, the storage cost of multiple depth planes is higher than directly storing the per-sample depth values. For each tile, depth compression may then be disabled, or another compression algorithm applied (which usually cannot compress as well as plane encoding).
While plane encoding is very useful for static, two-dimensional rasterization, it does not suffice to use static planes for higher order rasterization, where the depth function is more complex.